<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>catch [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_control.html">Control</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div data-if="dotnet" style="display:none"><p>Use the tabs on the upper right to switch to a different programming language.</p></div>
<div data-if="cpp" style="display:none"><p>Use the tabs on the upper right to switch to a different programming language.</p></div>
<div data-if="c" style="display:none"><p>Use the tabs on the upper right to switch to a different programming language.</p></div>
<div data-if="python" style="display:none"><p>Use the tabs on the upper right to switch to a different programming language.</p></div>
<div data-if="hdevelop" style="display:inline">
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">catch</span><span data-if="c" style="display:none;">T_catch</span><span data-if="cpp" style="display:none;">Catch</span><span data-if="dotnet" style="display:none;">Catch</span><span data-if="python" style="display:none;">catch</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">catch</span><span data-if="c" style="display:none;">T_catch</span><span data-if="cpp" style="display:none;">Catch</span><span data-if="dotnet" style="display:none;">Catch</span><span data-if="python" style="display:none;">catch</span></code> — Catches exceptions that were thrown in the preceding <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a> block.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>catch</b>( :  :  : <a href="#Exception"><i>Exception</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_catch</b>(Htuple* <a href="#Exception"><i>Exception</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>Catch</b>(HTuple* <a href="#Exception"><i>Exception</i></a>)</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>Catch</b>(out <a href="HTuple.html">HTuple</a> <a href="#Exception"><i>exception</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>catch</b>() -&gt; Sequence[Union[int, str]]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>With the help of 该算子s <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a>, <code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code>, <a href="endtry.html"><code><span data-if="hdevelop" style="display:inline">endtry</span><span data-if="c" style="display:none">endtry</span><span data-if="cpp" style="display:none">Endtry</span><span data-if="com" style="display:none">Endtry</span><span data-if="dotnet" style="display:none">Endtry</span><span data-if="python" style="display:none">endtry</span></code></a>,
and <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a> it is possible to implement a dynamic exception handling
in HDevelop, which is comparable to the exception handling in C++
and C#.  The basic concepts of the exception handling in HDevelop are
described at 该算子s <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a>, <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a>, and
<a href="dev_set_check.html"><code><span data-if="hdevelop" style="display:inline">dev_set_check</span><span data-if="c" style="display:none">dev_set_check</span><span data-if="cpp" style="display:none">DevSetCheck</span><span data-if="com" style="display:none">DevSetCheck</span><span data-if="dotnet" style="display:none">DevSetCheck</span><span data-if="python" style="display:none">dev_set_check</span></code></a> as well as in the <code>“HDevelop User's Guide”</code>.
</p>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code> ends a block of watched program lines
and starts a block of program lines that have to be executed
in an error case.
If the <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a>-<code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code> block is executed without an
exception, the <code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code>-<a href="endtry.html"><code><span data-if="hdevelop" style="display:inline">endtry</span><span data-if="c" style="display:none">endtry</span><span data-if="cpp" style="display:none">Endtry</span><span data-if="com" style="display:none">Endtry</span><span data-if="dotnet" style="display:none">Endtry</span><span data-if="python" style="display:none">endtry</span></code></a> block is ignored and
program execution continues after the corresponding <a href="endtry.html"><code><span data-if="hdevelop" style="display:inline">endtry</span><span data-if="c" style="display:none">endtry</span><span data-if="cpp" style="display:none">Endtry</span><span data-if="com" style="display:none">Endtry</span><span data-if="dotnet" style="display:none">Endtry</span><span data-if="python" style="display:none">endtry</span></code></a> operator.
In contrast, in an error case the program execution jumps directly from the
operator where the error occurred (or from the <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a> operator) to the
<code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code> operator of the surrounding <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a>-<code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code> block.
The output control parameter <a href="#Exception"><i><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></i></a> returns a tuple that contains
a predefined set of data describing the error in case an operator error
occurred.
If the exception was thrown by the <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a> operator, an
arbitrary user-defined tuple can be returned.
</p>
<p>The most important data within the <a href="#Exception"><i><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></i></a> tuple is the error
code.
Therefore, this is passed as the first item of the <a href="#Exception"><i><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></i></a> tuple
and can be accessed directly with <i><span data-if="hdevelop" style="display:inline">'Exception'</span><span data-if="c" style="display:none">"Exception"</span><span data-if="cpp" style="display:none">"Exception"</span><span data-if="com" style="display:none">"Exception"</span><span data-if="dotnet" style="display:none">"Exception"</span><span data-if="python" style="display:none">"Exception"</span></i>[0].
However, all other data has to be accessed through 该算子
<a href="dev_get_exception_data.html"><code><span data-if="hdevelop" style="display:inline">dev_get_exception_data</span><span data-if="c" style="display:none">dev_get_exception_data</span><span data-if="cpp" style="display:none">DevGetExceptionData</span><span data-if="com" style="display:none">DevGetExceptionData</span><span data-if="dotnet" style="display:none">DevGetExceptionData</span><span data-if="python" style="display:none">dev_get_exception_data</span></code></a>, because the order and the extent of the
provided data may change in future versions and
may vary for different programming language exports.
Especially, it has to be taken into account that in the exported code there
are some items of the error tuple that are not available and others
that might not be determined until they are requested (like error messages).
</p>
<p>If the exception was thrown by an operator error, a HALCON error
code (&lt; 10000) or if the aborted operator belongs to an extension package,
a user-defined error code (&gt; 10000) is returned as the error code.
A list of all HALCON error codes can be found in the appendix of the
“Extension Package Programmer's Manual”.
The first element of a user-defined <a href="#Exception"><i><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></i></a> tuple
thrown by 该算子 <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a> should be an error code
&gt;= 30000.
Additional tuple elements can be chosen without any restrictions.
</p>
<p>If an operator error occurred within HDevelop or HDevEngine, the following
information about the error is provided by the
<a href="#Exception"><i><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></i></a> tuple:
</p>
<ul>

<li>
<p>
The HALCON error code.
</p>
</li>
<li>
<p>
An additional HDevelop specific error code that specifies whether an
error was caught within the HALCON operator (code = 21000) or
outside 该算子, e.g., during the evaluation and assignment of the
parameter expressions.
In the latter case the error code specifies the kind of error
more precisely.
</p>
</li>
<li>
<p>
The HALCON error message.
</p>
</li>
<li>
<p>
An appropriate HDevelop-specific error message.
</p>
</li>
<li>
<p>
The number of the program line, where the error occurred.
</p>
</li>
<li>
<p>
The name of 该算子 that threw the exception (if the exception was
thrown in a protected procedure,
'--protected--' is returned instead of the
operator name).
</p>
</li>
<li>
<p>
The depth of the call stack (if the error occurred in 'main' a depth of 1
is returned).
</p>
</li>
<li>
<p>
The name of the procedure, where the error occurred.
</p>
</li>
</ul>
<p>In most cases, for an automatic exception handling it is sufficient to use
the HALCON error code.
Additional data is primarily passed in order to provide some information
about the error condition to the developer of the HDevelop program for
debugging reasons.
Attention: in the exported code, in general, information about the error
location will not be available.
</p>
<h2 id="sec_attention">注意</h2>
<p>The export of 该算子s <a href="try.html"><code><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></code></a>, <code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code>, <a href="endtry.html"><code><span data-if="hdevelop" style="display:inline">endtry</span><span data-if="c" style="display:none">endtry</span><span data-if="cpp" style="display:none">Endtry</span><span data-if="com" style="display:none">Endtry</span><span data-if="dotnet" style="display:none">Endtry</span><span data-if="python" style="display:none">endtry</span></code></a>,
and <a href="throw.html"><code><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></code></a> is not supported for the language C, but only for
the languages C++, C# and VisualBasic/.NET.
Only the latter support throwing exceptions across procedures.
</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Exception" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Exception</span><span data-if="c" style="display:none">Exception</span><span data-if="cpp" style="display:none">Exception</span><span data-if="com" style="display:none">Exception</span><span data-if="dotnet" style="display:none">exception</span><span data-if="python" style="display:none">exception</span></code></b> (output_control)  </span><span>exception-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i> / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>Hlong</i> / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Tuple returning the exception data.</p>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">catch</span><span data-if="c" style="display:none">catch</span><span data-if="cpp" style="display:none">Catch</span><span data-if="com" style="display:none">Catch</span><span data-if="dotnet" style="display:none">Catch</span><span data-if="python" style="display:none">catch</span></code> always returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="dev_get_exception_data.html"><span data-if="hdevelop" style="display:inline">dev_get_exception_data</span><span data-if="c" style="display:none">dev_get_exception_data</span><span data-if="cpp" style="display:none">DevGetExceptionData</span><span data-if="com" style="display:none">DevGetExceptionData</span><span data-if="dotnet" style="display:none">DevGetExceptionData</span><span data-if="python" style="display:none">dev_get_exception_data</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="try.html"><span data-if="hdevelop" style="display:inline">try</span><span data-if="c" style="display:none">try</span><span data-if="cpp" style="display:none">Try</span><span data-if="com" style="display:none">Try</span><span data-if="dotnet" style="display:none">Try</span><span data-if="python" style="display:none">try</span></a></code>, 
<code><a href="endtry.html"><span data-if="hdevelop" style="display:inline">endtry</span><span data-if="c" style="display:none">endtry</span><span data-if="cpp" style="display:none">Endtry</span><span data-if="com" style="display:none">Endtry</span><span data-if="dotnet" style="display:none">Endtry</span><span data-if="python" style="display:none">endtry</span></a></code>, 
<code><a href="throw.html"><span data-if="hdevelop" style="display:inline">throw</span><span data-if="c" style="display:none">throw</span><span data-if="cpp" style="display:none">Throw</span><span data-if="com" style="display:none">Throw</span><span data-if="dotnet" style="display:none">Throw</span><span data-if="python" style="display:none">throw</span></a></code>, 
<code><a href="dev_get_exception_data.html"><span data-if="hdevelop" style="display:inline">dev_get_exception_data</span><span data-if="c" style="display:none">dev_get_exception_data</span><span data-if="cpp" style="display:none">DevGetExceptionData</span><span data-if="com" style="display:none">DevGetExceptionData</span><span data-if="dotnet" style="display:none">DevGetExceptionData</span><span data-if="python" style="display:none">dev_get_exception_data</span></a></code>, 
<code><a href="dev_set_check.html"><span data-if="hdevelop" style="display:inline">dev_set_check</span><span data-if="c" style="display:none">dev_set_check</span><span data-if="cpp" style="display:none">DevSetCheck</span><span data-if="com" style="display:none">DevSetCheck</span><span data-if="dotnet" style="display:none">DevSetCheck</span><span data-if="python" style="display:none">dev_set_check</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
</div>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
